//
//  RequestService.h
//  WallDetection
//
//  Created by xiebin on 14-12-24.
//  Copyright (c) 2014年 xiebin. All rights reserved.
//

#import <Foundation/Foundation.h>
#import "AFHTTPRequestOperationManager.h"
#import "AFURLRequestSerialization.h"
#import "MD5Util.h"
#import "NSDate+Utilities.h"
#import "DESUtil.h"
#import "GTMBase64.h"
#define REQUEST_ERROR_NOTICE @"requestErrorNotice"//处理错误通知
//请求状态码
typedef NS_ENUM(NSInteger,RequestResultCode) {
    RRCSuccess = 0,// 成功
    RRCFailed  = -1,//失败
    RRCTimestampInvalid = -10,//时间戳无效（包含过期），HTTP 401
    RRCSignInvalid = -20,//签名无效，HTTP 401
    RRCTokenExpire = -30,//Token过期（正常的Token 正常过期，可用交换Token进行更换Token），HTTP 401
    RRCTokenInvalid = -31,//Token 无效 （交换Token 和正常的Token 都过期，必须要用户手动登录），HTTP 401
    RRCLongDistanceLogIn = -32,//异地登录，HTTP 401
    RRCForcedLogout = -33,//强迫下线（被系统强迫下线），HTTP 401
    RRCSystemMaintenance = -34,//系统维护，被迫下线。，HTTP 401
    RRCUnAuthorized = -39,//未授权（-30段中没有包含的错误代码）
    RRCNotFound = -40,// 未找到
    RRCError = -99 // 发生异常
};
//请求状态
typedef NS_ENUM(NSInteger,Status) {
    StatusSuccess = 0,  //请求成功
    StatusFailed = 1   //请求失败
};

#define kResData @"Data"
#define kResCode @"code"
#define kResStatus @"Status"
#define kResMessage @"Message"

typedef void (^requestFinishedBlock)(id result, AFHTTPRequestOperationManager *manager);

@interface HttpManager : NSObject

/** */
/**
 带进度指示器的网络请求
 
 @param title 标题为空不显示加载数据提示
 @param method 请求方法类型HTTPS_POST和HTTPS_GET
 @param path 要请求的URL
 @param paramDict 请求参数
 @param finishBlock 请求成功的回调
 @return 请求本身
 */
+(AFHTTPRequestOperationManager *)requestWithProgressTitle:(NSString *)title method:(NSString*)method path:(NSString*)path paramDict:(NSMutableDictionary*)paramDict  finishBlock:(requestFinishedBlock)finishBlock;

/*
 
 * 带进度指示器上传带的图片
 
 @param title 标题为空不显示加载数据提示
 @param path 要请求的URL
 @param paramDict 请求参数(普通)
 @param dataDic 请求参数（文件参数）
 @param extendType 文件后缀扩展名（jpg等）
 * dataDic[@"key1"] = @[imgData1,imgData2,imgData3];
 * dataDic[@"key2"] = @[img1]
 * dataDic的key代表的是接口API中的key,value是一个文件数组里面的对象可以是UIImage,也可以是NSData类型,dataDic可以为空
 */
+(AFHTTPRequestOperationManager *)uploadFileWithProgressTitle:(NSString *)title path:(NSString*)pathName  paramDict:(NSMutableDictionary*)paramDict withDataDic:(NSMutableDictionary *)dataDic extendType:(NSString *)extendType finishBlock:(requestFinishedBlock)finishBlock;


//+(void)downloadFileWithFileURL:(NSString*)fileURL savedPath:(NSString*)savedPath completionHandler:(void (^)(NSURLResponse *response, NSString *filePath, NSError *error))completionBlock;

@end
